package com.wang.lotterysystem.service;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.wang.lotterysystem.controller.param.DrawPrizeParam;
import com.wang.lotterysystem.controller.param.ShowWinningRecordsParam;
import com.wang.lotterysystem.dao.dataobject.WinningRecordDO;
import com.wang.lotterysystem.service.dto.WinningRecordDTO;

import java.util.List;

public interface DrawPrizeService {
    /**
     * 给消息队列发送抽奖参数
     * @param param 抽奖参数
     * @throws JsonProcessingException json异常
     */
    void drawPrize(DrawPrizeParam param) throws JsonProcessingException;

    /**
     * 校验抽奖参数是否有效
     *
     * @param param 抽奖参数
     * @return 返回是否校验成功
     */
    Boolean checkDrawPrizeValid(DrawPrizeParam param);

    /**
     * 保存中奖记录
     * @param param 中奖参数
     * @return 返回中奖记录
     */
    List<WinningRecordDO> saveWinningRecords(DrawPrizeParam param) throws JsonProcessingException;

    /**
     * 回滚,删除中奖记录
     *
     * @param activityId 活动id
     * @param prizeId    奖品id
     */
    void deleteRecords(Long activityId,Long prizeId);

    /**
     * 获取抽奖结果
     * @param param 活动id,奖品id
     * @return 返回中奖结果
     */
    List<WinningRecordDTO> getRecord(ShowWinningRecordsParam param) throws JsonProcessingException;
}